import { getIEVersion } from ".";

//从老系统复制过来的水印代码
// 添加水印
var watermark = function (text, container, count = 1) {
  if (typeof container === "string" || container instanceof String) container = document.querySelector(container);
  let ieVersion = getIEVersion();
  ////IE版本9 10 采用背景图片显示水印
  if (ieVersion === 9 || ieVersion === 10) {
    //创建一个画布
    var can = document.createElement("canvas");
    container.appendChild(can);
    can.style.zIndex = 999991;
    //设置画布的样式
    can.width = 300;
    can.height = 250;
    can.style.display = "none";
    //创建context对象
    var ctx = can.getContext("2d");
    //将context旋转-20度
    ctx.rotate((-15 * Math.PI) / 180);
    //定义字体样式
    ctx.font = "15px 微软雅黑";
    //设置字体颜色
    ctx.fillStyle = "rgba(0, 0, 0, 0.15)";
    //文本横向对齐方式
    ctx.textAlign = "left";
    //文本纵向对齐方式
    ctx.textBaseline = "Middle";
    //绘制实心文本，初始横坐标为画布宽度的1/3，初始纵坐标为画布高度的一半
    ctx.fillText(text, can.width / 3, can.height / 2);
    //将画布设为元素的背景，并且重复，达成水印的效果
    container.style.backgroundImage = "url(" + can.toDataURL("image/png") + ")";
    return;
  }
  //默认设置

  var defaultSettings = {
    watermark_txt: text,
    watermark_x: 0, //水印起始位置x轴坐标
    watermark_y: 20, //水印起始位置Y轴坐标
    watermark_rows: Math.floor(container.scrollHeight / 70), //水印行数
    watermark_cols: Math.floor(container.clientWidth / 200), //水印列数
    watermark_x_space: 60, //水印x轴间隔
    watermark_y_space: 100, //水印y轴间隔
    // watermark_color: "rgba(0,0,0,0.5)", //水印字体颜色
    // watermark_alpha: 0.3, //水印透明度
    // watermark_fontsize: "15px", //水印字体大小
    // watermark_font: "微软雅黑", //水印字体
    watermark_width: 182, //水印宽度
    watermark_height: 30, //水印长度
    // watermark_angle: 15, //水印倾斜度数
  };
  //采用配置项替换默认值，作用类似jquery.extend
  //   if (typeof settings === "object") {
  //     var src = settings || {};
  //     for (key in src) {
  //       if (src[key] && defaultSettings[key] && src[key] === defaultSettings[key]) continue;
  //       else if (src[key]) defaultSettings[key] = src[key];
  //     }
  //   }

  var oTemp = document.createDocumentFragment();
  //获取页面最大宽度
  var page_width = Math.max(container.scrollWidth, container.clientWidth);
  var cutWidth = page_width * 0.015;
  page_width = page_width - cutWidth;
  //获取页面最大高度
  var page_height = Math.max(container.scrollHeight, container.clientHeight);
  // var page_height = container.scrollHeight+container.scrollTop;
  //如果将水印列数设置为0，或水印列数设置过大，超过页面最大宽度，则重新计算水印列数和水印x轴间隔
  if (
    defaultSettings.watermark_cols === 0 ||
    parseInt(defaultSettings.watermark_x + defaultSettings.watermark_width * defaultSettings.watermark_cols + defaultSettings.watermark_x_space * (defaultSettings.watermark_cols - 1)) > page_width
  ) {
    defaultSettings.watermark_cols = parseInt((page_width - defaultSettings.watermark_x + defaultSettings.watermark_x_space) / (defaultSettings.watermark_width + defaultSettings.watermark_x_space));
    defaultSettings.watermark_x_space = parseInt((page_width - defaultSettings.watermark_x - defaultSettings.watermark_width * defaultSettings.watermark_cols) / (defaultSettings.watermark_cols - 1));
  }
  //如果将水印行数设置为0，或水印行数设置过大，超过页面最大长度，则重新计算水印行数和水印y轴间隔
  if (
    defaultSettings.watermark_rows === 0 ||
    parseInt(defaultSettings.watermark_y + defaultSettings.watermark_height * defaultSettings.watermark_rows + defaultSettings.watermark_y_space * (defaultSettings.watermark_rows - 1)) > page_height
  ) {
    defaultSettings.watermark_rows = parseInt((defaultSettings.watermark_y_space + page_height - defaultSettings.watermark_y) / (defaultSettings.watermark_height + defaultSettings.watermark_y_space));
    defaultSettings.watermark_y_space = parseInt(
      (page_height - defaultSettings.watermark_y - defaultSettings.watermark_height * defaultSettings.watermark_rows) / (defaultSettings.watermark_rows - 1 || 1)
    );
  }
  var x;
  var y;
  if(count<=0) count=1;
  if (count > 0) defaultSettings.watermark_rows += 4 * count;
  defaultSettings.watermark_rows += 10
  for (var i = 0; i < defaultSettings.watermark_rows; i++) {
    y = defaultSettings.watermark_y + (defaultSettings.watermark_y_space + defaultSettings.watermark_height) * i;
    for (var j = 0; j < defaultSettings.watermark_cols; j++) {
      x = defaultSettings.watermark_x + (defaultSettings.watermark_width + defaultSettings.watermark_x_space) * j + Math.ceil(Math.random() * 100);

      var mask_div = document.createElement("div");
      mask_div.id = "mask_div" + i + j;
      mask_div.className = "mask_div";
      mask_div.appendChild(document.createTextNode(defaultSettings.watermark_txt));
      //设置水印div倾斜显示
      // mask_div.style.webkitTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
      // mask_div.style.MozTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
      // mask_div.style.msTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
      // mask_div.style.OTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
      // mask_div.style.transform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
      mask_div.style.visibility = "";
      // mask_div.style.position = "absolute";
      mask_div.style.left = x + "px";
      mask_div.style.top = y + "px";
      // mask_div.style.overflow = "hidden";
      // mask_div.style.zIndex = "2";
      // mask_div.style.pointerEvents = "none"; //pointer-events:none  让水印不遮挡页面的点击事件
      //mask_div.style.border="solid #eee 1px";
      mask_div.style.opacity = defaultSettings.watermark_alpha;
      // mask_div.style.fontSize = defaultSettings.watermark_fontsize;
      // mask_div.style.fontFamily = defaultSettings.watermark_font;
      // mask_div.style.color = defaultSettings.watermark_color;
      // mask_div.style.textAlign = "center";
      mask_div.style.width = defaultSettings.watermark_width + "px";
      mask_div.style.height = defaultSettings.watermark_height + "px";
      // mask_div.style.display = "block";
      oTemp.appendChild(mask_div);
    }
  }
  container.appendChild(oTemp);
};

export function removeWatermark(containerClass) {
  if (typeof containerClass === "string" || containerClass instanceof String) containerClass = document.querySelector(containerClass);

  //组件销毁时移除水印dom
  let allMasks2 = document.querySelectorAll(".mask_div");

  allMasks2.forEach((mask) => {
    try {
      containerClass.removeChild(mask);
    } catch (error) {}
  });
}

export function hideWatermark(containerClass) {
  //组件销毁时移除水印dom
  let allMasks2 = document.querySelectorAll(containerClass + " .mask_div");
  allMasks2.forEach((mask) => {
    mask.style.display = "none";
  });
}

export function showWatermark(containerClass) {
  //组件销毁时移除水印dom
  let allMasks2 = document.querySelectorAll(containerClass + " .mask_div");
  allMasks2.forEach((mask) => {
    mask.style.display = "block";
  });
}
export default watermark;
